Allow resolving absolute paths even if there is no base_folder
authorFederico Mena Quintero <federico@gnome.org>
Wed, 29 Jun 2011 23:20:53 +0000 (18:20 -0500)
committerFederico Mena Quintero <federico@gnome.org>
Sat, 2 Jul 2011 00:07:11 +0000 (19:07 -0500)
This lets us do proper completion in GtkFileChooserEntry even when no base folder
has been set.  Completion for relative paths won't work, as usual, as expected.

gtk/gtkfilechooserentry.c
gtk/gtkfilesystem.c

index 55303ed0fbd17521eca093e51ca2af63c021a632..6ac0b4b4309fdbfbd6deb8641fd3504f26fbae89 100644 (file)
@@ -1563,7 +1563,6 @@ refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry,
 
   error = NULL;
   if (!chooser_entry->file_system ||
-      !chooser_entry->base_folder ||
       !_gtk_file_system_parse (chooser_entry->file_system,
                               chooser_entry->base_folder, text,
                               &folder_file, &file_part, &error))
index 30ff484444cc8f5e0614cc6d0e1bb8a7911763b1..f3d8e823a0eaf1a78aa2d7612593416c859a0040 100644 (file)
@@ -708,9 +708,22 @@ _gtk_file_system_parse (GtkFileSystem     *file_system,
   if (str[0] == '~' || g_path_is_absolute (str) || is_uri)
     file = g_file_parse_name (str);
   else
-    file = g_file_resolve_relative_path (base_file, str);
+    {
+      if (base_file)
+       file = g_file_resolve_relative_path (base_file, str);
+      else
+       {
+         *folder = NULL;
+         *file_part = NULL;
+         g_set_error (error,
+                      GTK_FILE_CHOOSER_ERROR,
+                      GTK_FILE_CHOOSER_ERROR_BAD_FILENAME,
+                      _("Invalid path"));
+         return FALSE;
+       }
+    }
 
-  if (g_file_equal (base_file, file))
+  if (base_file && g_file_equal (base_file, file))
     {
       /* this is when user types '.', could be the
        * beginning of a hidden file, ./ or ../